<?php 
class RelatoriosController extends AppController {

	var $name = 'Relatorios';
	var $pageTitle = 'Relatórios Financeiros de Depreciação';
	var $helpers = array('Ajax', 'Html', 'Form', 'Js',  'Ajaxloaderinfo');
	var $components = array('RequestHandler');
	var $uses = array('ResumoFinanceiro', 'BemPatrimonial', 'Grupo', 'Estadoconservacao', 'Unidade','ContaContabil');
	var $meses = array( 
    1 =>  "Janeiro",
    2 => "Fevereiro",
    3 => "Março",
    4 => "Abril",
    5 => "Maio",
    6 => "Junho",
    7 => "Julho",
    8 => "Agosto",
    9 => "Setembro",
    10 => "Outubro",
    11 => "Novembro",
    12 => "Dezembro");
	
	public function test_pdf(){
		$this->layout = 'pdf'; //this will use the pdf.ctp layout
		$this->render();
	}
	
	
	
	public  function bens_unidades()
	{
		
		if(!empty($this->data)){
			$filtro = " ";
			if (!empty($this->data['relatorio']['unidade_id'])){
				$unidade_id = $this->data['relatorio']['unidade_id'];
				$filtro = "where b.unidade_id = {$unidade_id} ";
			}
					
			$sql = "SELECT * from bem_patrimonials b {$filtro}";
			$dados =$this->BemPatrimonial->query($sql);
			$this->set("dataSet", $dados);
			$this->layout = 'pdf'; //define layout pdf
			$this->render("bens_unidades_pdf");
		}else{
			$unidades = $this->Unidade->find('list', array('order' => array('Unidade.descricao' => 'ASC')));
			$this->set('unidades',$unidades);
		}
		
	}
	
	public  function resumo_financeiro()
	{
		
		$meses = $this->meses;
		$anos = $this->montaArrayAnos();
				
		$this->set("meses", $meses);
		$this->set("meses_json", json_encode($meses));
		$this->set("anos", $anos);
		

	}
	
	public function resumo_financeiro2_pdf(){
		if(!empty($this->data))
		{
			//pr($this->data);
			$mesRef = $this->data['relatorio']['mes'];
			$anoRef = $this->data['relatorio']['ano'];
			$sql = "SELECT * FROM resumo_financeiros rf
			inner join grupos g on rf.grupo_id = g.id
			inner join conta_contabils cc on g.conta_contabil_id = cc.id
			where
			(rf.mes = {$mesRef})  AND (rf.ano = {$anoRef})";
			/*
			$sql = "SELECT (CASE WHEN (r.tipo_registro = 1) THEN ''
					WHEN (r.tipo_registro = 2) THEN 'BAIXADOS NO Mï¿½S'
					WHEN (r.tipo_registro = 3) THEN 'TOTAL DO PATRIMï¿½NIO'
					WHEN (r.tipo_registro = 4) THEN ''
					WHEN (r.tipo_registro = 5) THEN 'BAIXADOS NO Mï¿½S'
					WHEN (r.tipo_registro = 6) THEN 'TOTAL DO PATRIMï¿½NIO'
					WHEN (r.tipo_registro = 7) THEN ''
					WHEN (r.tipo_registro = 8) THEN 'BAIXADOS NO Mï¿½S'
					WHEN (r.tipo_registro = 9) THEN 'TOTAL DO PATRIMï¿½NIO'
					END) as tipo, r.tipo_registro,
			c.id as grupocontabil_id, (c.grupocontabil || ' - ' || c.descricao) as grupocontabil,
			r.saldo_anterior, r.valor_aquisicao, r.valor_corrigido, r.depreciacao_anterior, r.depreciacao_aquisicao,
			r.depreciacao_mes, r.depreciacao_acumulada
			FROM resumofinanceiros r, contacontabils c
			WHERE (s.grupocontabil_id=g.id) AND (r.subgrupo_id=s.id)
			AND (r.mes_referencia = {$mesRef}) AND (r.ano_referencia = {$anoRef}) AND (r.tipo_registro in ({$this->data['Relatorio']['tipo_registro']}))
			GROUP BY r.tipo_registro, c.id, c.grupocontabil,c.descricao,po,
			r.saldo_anterior, r.valor_aquisicao, r.valor_corrigido, r.depreciacao_anterior,
			r.depreciacao_aquisicao, r.depreciacao_mes, r.depreciacao_acumulada
			ORDER BY r.tipo_registro, c.descricao "; */
				
			$dataSet = $this->ResumoFinanceiro->query($sql);
			if (empty($dataSet)) {
			$this->Session->setFlash(__('Não foram encontrados registros para os critérios de busca informados.'));
			$this->redirect("/relatorios/resumo_financeiro");
			
		}else{
			
			/*
			$this->set("dataSet", $dadosResumoFinanceiro);
				
				$this->set("mesRef", $anoRef);
				$this->layout = 'pdf'; //define layout pdf
				$this->render();
				exit; */
			$mesRef =  str_pad($mesRef, 2, 0, STR_PAD_LEFT);
			$this->set(compact('dataSet', 'mesRef', 'anoRef'));
			}
		
		}
		$this->layout = 'pdf'; //this will use the pdf.ctp layout
		$this->render();	
	}
	
	
	public  function depreciacao_bens()
	{
		$clienteId = $_SESSION['Login']['Cliente']['id'];
		// Busca o mï¿½s e o ano do ï¿½ltimo cï¿½lculo da depreciaï¿½ï¿½o
		$dadosCliente = $this->Cliente->read(array("mes_referencia_financeiro", "ano_referencia_financeiro", "status_depreciacao"), $clienteId);
		
		if (!empty($this->data)) 
		{
			if (!empty($this->data['RelatorioDepreciacao']['tombo'])) {
				$arrayMaterial = explode("->", $this->data['RelatorioDepreciacao']['tombo']); 
			}
			
			$this->data['RelatorioDepreciacao']['mes'] = intval($this->data['RelatorioDepreciacao']['mes']);
			if ($this->data['RelatorioDepreciacao']['mes'] == $dadosCliente['Cliente']['mes_referencia_financeiro'] && $this->data['RelatorioDepreciacao']['ano'] == $dadosCliente['Cliente']['ano_referencia_financeiro'])
			{
				$sql = "Select s.id as subgrupo_id, s.subgrupo, g.id as grupo_id, g.descricao, p.id, p.tombo, c.material, pf.valor_aquisicao, 
						pf.data_documento, pf.data_utilizacao, pf.valor_depreciavel, pf.valor_depreciacao_mes, valor_depreciacao_acumulado 
						from patrimoniofinanceiros pf 
							inner join patrimonios p on pf.patrimonio_id = p.id
							inner join subgrupos s on p.subgrupo_id  = s.id
							inner join grupocontabils g on s.grupocontabil_id = g.id
							inner join catalogomaterials c on p.catalogomaterial_id = c.id
						where p.cliente_id = {$clienteId} and pf.mes_referencia = {$this->data['RelatorioDepreciacao']['mes']} 
								and pf.ano_referencia = {$this->data['RelatorioDepreciacao']['ano']} ";
			} else {
				$sql = "Select s.id as subgrupo_id, s.subgrupo, g.id as grupo_id, g.descricao, p.id, p.tombo, c.material, hpf.valor_aquisicao, 
						hpf.data_documento, hpf.data_utilizacao, hpf.valor_depreciavel, hpf.valor_depreciacao_mes, hpf.valor_depreciacao_acumulado 
						from historicopatrimoniofinanceiros hpf
							inner join patrimoniofinanceiros pf on hpf.patrimoniofinanceiro_id = pf.id 
							inner join patrimonios p on pf.patrimonio_id = p.id
							inner join subgrupos s on p.subgrupo_id  = s.id
							inner join grupocontabils g on s.grupocontabil_id = g.id
							inner join catalogomaterials c on p.catalogomaterial_id = c.id
						where p.cliente_id = {$clienteId} and hpf.mes_referencia = {$this->data['RelatorioDepreciacao']['mes']} 
								and hpf.ano_referencia = {$this->data['RelatorioDepreciacao']['ano']} and hpf.valor_depreciacao_mes is not null 
								and hpf.numero_execucao = (Select max(h.numero_execucao) as ultima_versao from historicopatrimoniofinanceiros h
														   where h.cliente_id = {$clienteId} and h.mes_referencia = {$this->data['RelatorioDepreciacao']['mes']} 
														   and h.ano_referencia = {$this->data['RelatorioDepreciacao']['ano']}) ";
			}
			
			// Filtros
			$sql .= (!empty($this->data['RelatorioDepreciacao']['grupocontabil_id'])) ? " and g.id = {$this->data['RelatorioDepreciacao']['grupocontabil_id']} " : "";
			$sql .= (!empty($this->data['RelatorioDepreciacao']['subgrupo_id'])) ? " and s.id = {$this->data['RelatorioDepreciacao']['subgrupo_id']} " : "";
			$sql .= (!empty($arrayMaterial)) ? " and p.tombo = {$arrayMaterial[0]}" : "";
			$sql .=	"order by g.descricao, s.subgrupo, p.tombo";
			
			$dadosDepreciacaoBens = $this->Patrimoniofinanceiro->query($sql);
			if (empty($dadosDepreciacaoBens)) {
				$_SESSION['mensagem'] = 'Nï¿½o foram encontrados registros para os critï¿½rios de busca informados';
				$this->redirect("/authentications/mensagem_relatorio/");	
  			}
			
			$this->set("dataSet", $dadosDepreciacaoBens);
			$this->set("mesRef", str_pad($this->data['RelatorioDepreciacao']['mes'], 2, 0, STR_PAD_LEFT));
			$this->set("anoRef", $this->data['RelatorioDepreciacao']['ano']);
			$this->layout = 'pdf'; //define layout pdf
			$this->render("depreciacao_bens_pdf");
			exit;
		}
		
		// Por padrï¿½o seta o mï¿½s atual
		$this->data['RelatorioDepreciacao']['mes'] = $dadosCliente['Cliente']['mes_referencia_financeiro'];
		$this->data['RelatorioDepreciacao']['ano'] = $dadosCliente['Cliente']['ano_referencia_financeiro'];
		$meses = $this->meses;
		$anos = $this->montaArrayAnos();
		$this->set("meses", $meses);
		$this->set("anos", $anos);
		$this->set('grupocontabils', $this->Subgrupo->Grupocontabil->generateList("(Grupocontabil.situacao = 'A')", "descricao", null, "{n}.Grupocontabil.id", "{n}.Grupocontabil.descricao"));
		$this->pageTitle = "Relatï¿½rio de Depreciaï¿½ï¿½o de Bens";
	}
	
	
	function ajaxpreenche_subgrupo() 
   	{
   		$poderPublicoId = $_SESSION['Login']['Cliente']['Orgao']['poderpublico_id'];
   		// Seta variaveis com vazio
        if (!empty($this->data['RelatorioDepreciacao']['grupocontabil_id'])) {
        	$consulta = $this->data['RelatorioDepreciacao']['grupocontabil_id'];	
        } else {
        	$consulta = $data;
        }  
                             
        if(!empty($consulta)) {
            $data = $this->Subgrupo->generateList(" Subgrupo.grupocontabil_id = '{$consulta}' and Subgrupo.poderpublico_id = '{$poderPublicoId}' and Subgrupo.situacao = 'A'", "subgrupo", null, "{n}.Subgrupo.id", "{n}.Subgrupo.subgrupo");
            if (!empty($data)){   
            	$this->set('subgrupos', $data) ;
            } else {
   				$this->set('subgrupos', array());
        	}            
        } else {
   			$this->set('subgrupos', array());
        }
    }
    
    
	function ajaxpreenche_tombos(){
    	// Pega o poder pï¿½blico do usuï¿½rio atual
		$poderPublicoId = $_SESSION['Login']['Cliente']['Orgao']['poderpublico_id'];
		$clienteId = $_SESSION['Login']['Cliente']['id'];
		
        $this->RequestHandler->setAjax($this);
        $tombo = (int)$this->data['RelatorioDepreciacao']['tombo'];
        
        if ($tombo > 0) {
		    $tombo_material = $this->Patrimoniofinanceiro->Patrimonio->findAll("(Patrimonio.cliente_id = {$clienteId}) and (Catalogomaterial.poderpublico_id = {$poderPublicoId}) AND (Patrimonio.tombo = {$tombo})", "Patrimonio.tombo,Catalogomaterial.material", "tombo");
		    $this->set('tombo_material',$tombo_material);
        } else {
            $descricao = utf8_decode($this->data['RelatoriosPatrimonio']['tombo2']);
        	$tombo_material = $this->Patrimoniofinanceiro->Patrimonio->findAll("(Patrimonio.cliente_id = {$clienteId}) and (Catalogomaterial.poderpublico_id = {$poderPublicoId}) AND (fonetizado like fc_fonetica('{$descricao}%'))", "Patrimonio.tombo,Catalogomaterial.material", "tombo");
        	$this->set('tombo_material',$tombo_material);
		}
    }
    
	
	/**
	 * Monta uma array com os dez ï¿½ltimos anos.
	 * 
	 * @return array Um vetor com os anos.
	 */
	private function montaArrayAnos()
	{
		$anos = array();
		$anoAtual = date("Y");
		
		// Monta o array dos anos
	 	for($i=$anoAtual;$i>=$anoAtual-10;$i--){
			$anos[$i] = $i;
	 	}
	 	
	 	return $anos;
	}
	
	
	public function analitico_depreciacao(){
	}
	
	public function analitico_depreciacao_pdf(){
		
		if($this->data){
			$contaContabil = $this->ContaContabil->read(null, $this->data['Relatorio']['id']);
			
			$filtro = " ";
			if (!empty( $this->data['Relatorio']['id'])){
				$cid = $this->data['Relatorio']['id'];
				$filtro = " where g.conta_contabil_id = {$cid} ";
			}
			
			$result = $this->ResumoFinanceiro->query("
				SELECT mes, ano, 
				sum(valor_anterior) as valor_anterior, 
				sum(valor_aquisicao) as valor_aquisicao, 
				sum(valor_corrigido) as valor_corrigido, 
				sum(valor_depreciacao_mes) as valor_depreciacao_mes, 
				sum(valor_depreciacao_acumulada) as valor_depreciacao_acumulada,
				sum(valor_avaliacao) as valor_avaliacao
				FROM resumo_financeiros rf
				inner join grupos g on rf.grupo_id = g.id
				inner join conta_contabils cc on g.conta_contabil_id = cc.id
				$filtro
				group by ano, mes
				order by ano, mes			
			");
			
			$this->set(compact('contaContabil', 'result'));
		}
		$this->layout = 'pdf'; //this will use the pdf.ctp layout
		$this->render();
	}
	
	public function bens_conta(){
	}
	
	public function bens_conta_pdf(){
	
		if($this->data){
			$contaContabil = $this->ContaContabil->read(null, $this->data['Relatorio']['id']);
				
				$filtro = " ";
				if (!empty( $this->data['Relatorio']['id'])){
					$cid = $this->data['Relatorio']['id'];
					$filtro = " where g.conta_contabil_id = {$cid} ";
				}
					
			$result = $this->BemPatrimonial->query("
				SELECT b.*, p.descricao as produto, g.grupo, e.estado_conservacao, u.descricao as unidade				
				FROM bem_patrimonials b
				inner join unidades u on b.unidade_id = u.id
				inner join produtos p on b.produto_id = p.id
				inner join grupos g on p.grupo_id = g.id
				inner join conta_contabils cc on g.conta_contabil_id = cc.id
				inner join estadoconservacaos e on b.estadoconservacao_id = e.id	
				$filtro				
				order by  cc.descricao, g.grupo, b.numero_bem
			");
				
			$this->set(compact('contaContabil', 'result'));
		}
		$this->layout = 'pdf'; //this will use the pdf.ctp layout
		$this->render();
	}
	
	public function bens_baixados(){
	}
	
	public function bens_baixados_pdf(){
	
		if($this->data){
			$contaContabil = $this->ContaContabil->read(null, $this->data['Relatorio']['id']);
	
			$filtro = " ";
			if (!empty( $this->data['Relatorio']['id'])){
				$cid = $this->data['Relatorio']['id'];
				$filtro = " and g.conta_contabil_id = {$cid} ";
			}
				
			$result = $this->BemPatrimonial->query("
					SELECT b.*, p.descricao as produto, g.grupo, e.estado_conservacao, u.descricao as unidade
					FROM bem_patrimonials b
					inner join unidades u on b.unidade_id = u.id
					inner join produtos p on b.produto_id = p.id
					inner join grupos g on p.grupo_id = g.id
					inner join conta_contabils cc on g.conta_contabil_id = cc.id
					inner join estadoconservacaos e on b.estadoconservacao_id = e.id
					where b.data_baixa is not null {$filtro}
					order by  cc.descricao, g.grupo, b.numero_bem
					");
	
			$this->set(compact('contaContabil', 'result'));
		}
		$this->layout = 'pdf'; //this will use the pdf.ctp layout
		$this->render();
	}
	
	public  function bens_inventariados()
	{
	
		if(!empty($this->data)){
			$filtro = " ";
			if (!empty($this->data['relatorio']['unidade_id'])){
				$unidade_id = $this->data['relatorio']['unidade_id'];
				$filtro = " and  b.unidade_id = {$unidade_id} ";
			}
				
			$sql = "SELECT * from bem_patrimonials b 
			where b.data_inventario is not null {$filtro}";
			$dados =$this->BemPatrimonial->query($sql);
			$this->set("dataSet", $dados);
			$this->layout = 'pdf'; //define layout pdf
			$this->render("bens_unidades_pdf");
		}else{
			$unidades = $this->Unidade->find('list', array('order' => array('Unidade.descricao' => 'ASC')));
			$this->set('unidades',$unidades);
		}
	
	}
}

?>